<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>创建对象</title>
</head>
<body>
  <script type="text/javascript">
     // 1. 使用new 关键字创建JS内置对象
     let d1 = new Date(); // 创建日期对象
     console.log(d1.getFullYear()); // 获取当前的年份 结果2023
     let year = d1.getFullYear();
     let month = d1.getMonth() + 1;
     let date = d1.getDate();
     let days = ["星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]; // JS定义数组
     let day = days[d1.getDay()]; // 2 --> 星期二
     console.log(year + "年" + month + "月" + date + "日 " + day);

     // 2. 基于构造方法声明一个类 并创建类的对象
     function Person(name, age) {
       // JS中通过this声明一个类的成员 没有使用this声明的就是一个普通的局部变量
       this.name = name; // 使用this声明一个属性
       this.age = age;
       var gender = "男"; // gender只是一个局部变量

       // 声明一个方法 也是类的成员
       this.say = function () {
          return this.name + ":" + this.age;
       }
     }
     // 创建对象
     let p1 = new Person("小明", 20);
     console.log(p1.name); // 直接访问对象的属性
     console.log(p1.say()); // 调用对象成员方法

     // 3. 通过字面量方式创建对象 类似Java中的匿名内部类
     let person = {
       name: "Jerry", // 声明一个属性并赋值
       age: 20,
       sayHello: function () {
         return this.name + ":" + this.age;
       }
     }; // 最后以分号结束
     console.log(person.age); // 直接访问属性
     console.log(person.sayHello()); // 直接访问方法
  </script>
</body>
</html>